package exercicios_threads.threads_aracaju.produtor_consumidor;
/**
 * Classe de thread consumidora
 */
class ConsumidorThread extends Thread {
	/* objeto para referenciar o buffer */
	BufferLimitado buffer;
	/* quantidade de itens a serem consumidos */
	int quantItens;

	/**
	 * Construtor
	 * @param threadGroup Grupo da thread
	 * @param nomeThread Nome da thread
	 * @param buffer buffer a ser utilizado
	 * @param quantItens quantidade de itens a serem consumidos
	 */
	public ConsumidorThread (ThreadGroup threadGroup, String nomeThread, 
							  BufferLimitado buffer, int quantItens) {
		super(threadGroup, nomeThread);
		this.buffer = buffer;
		this.quantItens = quantItens;
	}

	/*
	 * Metodo run da thread, o qual contem o ser comportamento
	 */
	public void run () {
		for (int i = 1; i <= quantItens; i++) {
			/* Retita um elemtno do buffer */
			buffer.retira();
			/* dorme pelo intervalo de tempo aleatorio [0 ... 100]mseg */
			int tempo = (int) (Math.random() * 1000);
			dorme(tempo);
		}
	}
	
	private void dorme(int tempo) {
		try {
			sleep(tempo);
		} catch (InterruptedException e) {
			System.out.println(e.getMessage());
		}
	}

}
